-- *------------------------------------------------------------------
-- * CISCO-CEF-MIB.my:  Cisco CEF MIB.
-- *
-- * Jan 2006, Rohit Mendiratta
-- *
-- * This MIB module is used to manage CISCO Express Forwarding
-- * (CEF).
-- *
-- * Copyright (c) 2006 by Cisco Systems, Inc.
-- * All rights reserved.
-- *
-- *------------------------------------------------------------------

CISCO-CEF-MIB DEFINITIONS ::= BEGIN

   IMPORTS
      MODULE-IDENTITY, 
      OBJECT-TYPE,
      NOTIFICATION-TYPE,
      Counter64,
      Counter32,
      Integer32,
      Gauge32,
      Unsigned32
        FROM SNMPv2-SMI
      MODULE-COMPLIANCE, 
      OBJECT-GROUP,
      NOTIFICATION-GROUP
        FROM SNMPv2-CONF
      TimeStamp,
      RowStatus,
      TruthValue,
      TestAndIncr
        FROM SNMPv2-TC
      CounterBasedGauge64
        FROM HCNUM-TC
      ifIndex,
      InterfaceIndexOrZero 
        FROM IF-MIB
      entPhysicalIndex,
      PhysicalIndex
        FROM ENTITY-MIB
      InetAddressType,
      InetAddress,
      InetAddressPrefixLength
        FROM INET-ADDRESS-MIB
      SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
      MplsVpnId 
        FROM MPLS-VPN-MIB
      EntPhysicalIndexOrZero
        FROM CISCO-TC
      CefIpVersion,
      CefAdjLinkType,
      CefAdjacencySource,
      CefPathType,
      CefPrefixSearchState,
      CefForwardingElementSpecialType,
      CefMplsLabelList,
      CefAdminStatus,
      CefOperStatus,
      CefFailureReason,
      CefCCType,
      CefCCAction,
      CefCCStatus
        FROM CISCO-CEF-TC 
      ciscoMgmt 
        FROM CISCO-SMI;


   ciscoCefMIB MODULE-IDENTITY
      LAST-UPDATED "200601300000Z"
      ORGANIZATION "Cisco System, Inc."
      CONTACT-INFO
          "Postal: Cisco Systems, Inc.
          170 West Tasman Drive
          San Jose, CA 95134-1706
          USA

          Tel: +1 800 553-NETS

          E-mail: cs-cef@cisco.com"

      DESCRIPTION
         "Cisco Express Forwarding (CEF) describes a high speed 
          switching mechanism that a router uses to forward packets
          from the inbound to the outbound interface. 

          CEF uses two sets of data structures
          or tables, which it stores in router memory:

          Forwarding information base (FIB) - Describes a database
          of information used to make forwarding decisions. It is 
          conceptually similar to a routing table or route-cache, 
          although its implementation is different.

          Adjacency - Two nodes in the network are said to be 
          adjacent if they can reach each other via a single hop 
          across a link layer.           
       
          CEF path is a valid route to reach to a destination 
          IP prefix. Multiple paths may exist out of a router to the 
          same destination prefix. CEF Load balancing capability 
          share the traffic to the destination IP prefix over all 
          the active paths. 

          After obtaining the prefix in the CEF table with the
          longest match, output forwarding follows the chain of 
          forwarding elements. 

          Forwarding element (FE) may process the packet, forward 
          the packet, drop or punt the packet or it may also
          pass the packet to the next forwarding element in the 
          chain for further processing.

          Forwarding Elements are of various types
          but this MIB only represents the forwarding elements of
          adjacency and label types. Hence a forwarding element 
          chain will be represented as a list of labels and
          adjacency. The adjacency may point to a forwarding element
          list again, if it is not the last forwarding element in this
          chain. 
    
          For the simplest IP forwarding case, the prefix entry will 
          point at an adjacency forwarding element.
          The IP adjacency processing function will apply the output
          features, add the encapsulation (performing any required 
          fixups), and may send the packet out.

          If loadbalancing is configured, the prefix entry will point 
          to lists of forwarding elements. One of these lists will be 
          selected to forward the packet. 

          Each forwarding element list dictates which of a set of 
          possible packet transformations to apply on the way to 
          the same neighbour. 

          The following diagram represents relationship
          between three of the core tables in this MIB module.

           cefPrefixTable             cefFESelectionTable
         
           +---------------+  points           +--------------+   
           |   |     |     |  a set     +----> |   |   |   |  | 
           |---------------|  of FE     |      |--------------|   
           |   |     |     |  Selection |      |   |   |   |  |
           |---------------|  Entries   |      |--------------|    
           |   |     |     |------------+      |              |<----+ 
           |---------------|                   |--------------|     |
           |               |    +--------------|   |   |   |  |     |
           +---------------+    |              +--------------+     |
                                |                                   |
                          points to an                              |
                          adjacency entry                           |
                                |                                   |
                                |   cefAdjTable                     |
                                |  +---------------+  may point     |
                                +->|   |     |     |  to a set      |
                                   |---------------|  of FE         |
                                   |   |     |     |  Selection     |
                                   |---------------|  Entries       | 
                                   |   |     |     |----------------+
                                   |---------------| 
                                   |               | 
                                   +---------------+ 

          Some of the Cisco series routers (e.g. 7500 & 12000) 
          support distributed CEF (dCEF), in which the line cards 
          (LCs) make the packet forwarding decisions using locally 
          stored copies of the same Forwarding information base (FIB)
          and adjacency tables as the Routing Processor (RP).
                    
          Inter-Process Communication (IPC) is the protocol used 
          by routers that support distributed packet forwarding. 
          CEF updates are encoded as external Data Representation 
          (XDR) information elements inside IPC messages. 
                   
          This MIB reflects the distributed nature of CEF, e.g. CEF
          has different instances running on the RP and the line cards.

          There may be instances of inconsistency between the
          CEF forwarding databases(i.e between CEF forwarding 
          database on line cards and the CEF forwarding database
          on the RP). CEF consistency checkers (CC) detects 
          this inconsistency.

          When two databases are compared by a consistency checker, 
          a set of records from the first (master) database is 
          looked up in the second (slave).
          
          There are two types of consistency checkers, 
          active and passive. Active consistency checkers 
          are invoked in response to some stimulus, i.e. 
          when a packet cannot be forwarded because the 
          prefix is not in the forwarding table or 
          in response to a Management Station request.

          Passive consistency checkers operate in the background, 
          scanning portions of the databases on a periodic basis.

          The full-scan checkers are active consistency checkers
          which are invoked in response to a Management Station
          Request.

          If 64-bit counter objects in this MIB are supported,
          then their associated 32-bit counter objects 
          must also be supported. The 32-bit counters will
          report the low 32-bits of the associated 64-bit 
          counter count (e.g., cefPrefixPkts will report the 
          least significant 32 bits of cefPrefixHCPkts).
          The same rule should be applied for the 64-bit gauge
          objects and their assocaited 32-bit gauge objects.

          If 64-bit counters in this MIB are not supported,
          then an agent MUST NOT instantiate the corresponding
          objects with an incorrect value; rather, it MUST 
          respond with the appropriate error/exception 
          condition (e.g., noSuchInstance or noSuchName). 

          Counters related to CEF accounting (e.g.,
          cefPrefixPkts) MUST NOT be instantiated if the
          corresponding accounting method has been disabled.  
           
          This MIB allows configuration and monitoring of CEF 
          related objects."

      REVISION     "200601300000Z"
      DESCRIPTION
         "Initial version of this MIB module."
      ::= { ciscoMgmt 492 }


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- CISCO CEF MIB Object Groups
--
-- This MIB module contains the following groups:
--        CEF FIB Group
--        CEF Adjacency Group
--        CEF Forwarding Element Group
--        CEF Cfg Group
--        CEF Interface Group
--        CEF Peer Group
--        CEF Consistency Checker (CC) group
--        CEF Stats Group
--        CEF Notification Control Group.
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   ciscoCefMIBNotifs  OBJECT IDENTIFIER  ::= {ciscoCefMIB 0}
   ciscoCefMIBObjects OBJECT IDENTIFIER  ::= {ciscoCefMIB 1}
   ciscoCefMIBConform OBJECT IDENTIFIER  ::= {ciscoCefMIB 2}

   cefFIB        OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  1 }   
   cefAdj        OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  2 }
   cefFE         OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  3 }
   cefGlobal     OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  4 }
   cefInterface  OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  5 }
   cefPeer       OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  6 }
   cefCC         OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  7 }
   cefStats      OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  8 }
   cefNotifCntl  OBJECT IDENTIFIER ::= { ciscoCefMIBObjects  9 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF FIB Summary 
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefFIBSummary  OBJECT IDENTIFIER  
                  ::= { cefFIB 1 }

   cefFIBSummaryTable OBJECT-TYPE
      SYNTAX     SEQUENCE OF CefFIBSummaryEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
         "This table contains the summary information
          for the cefPrefixTable."
     ::= { cefFIBSummary 1 }

   cefFIBSummaryEntry OBJECT-TYPE
      SYNTAX     CefFIBSummaryEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contains the FIB summary related
          attributes for the managed entity.
        
          A row may exist for each IP version type
          (v4 and v6) depending upon the IP version
          supported on the device.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex, cefFIBIpVersion }
      ::= { cefFIBSummaryTable 1}

   CefFIBSummaryEntry ::= SEQUENCE { 
      cefFIBIpVersion             CefIpVersion, 
      cefFIBSummaryFwdPrefixes    Unsigned32
   }

   cefFIBIpVersion OBJECT-TYPE
      SYNTAX      CefIpVersion 
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The version of IP forwarding."
   ::= { cefFIBSummaryEntry 1 }

   cefFIBSummaryFwdPrefixes OBJECT-TYPE
      SYNTAX      Unsigned32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Total number of forwarding Prefixes
          in FIB for the IP version specified
          by cefFIBIpVersion object." 
      ::= { cefFIBSummaryEntry 2 }

 
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Forwarding Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefPrefixTable OBJECT-TYPE
      SYNTAX     SEQUENCE OF CefPrefixEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
         "A list of CEF forwarding prefixes."
      ::= { cefFIB 2 }

   cefPrefixEntry OBJECT-TYPE
      SYNTAX      CefPrefixEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contains the forwarding 
          prefix attributes. 

          CEF prefix based non-recursive stats are maintained
          in internal and external buckets (depending upon the 
          value of cefIntNonrecursiveAccouting object in the 
          CefIntEntry).

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex, 
              cefPrefixType,
              cefPrefixAddr,
              cefPrefixLen
            }
      ::= { cefPrefixTable 1}

   CefPrefixEntry ::= SEQUENCE {
      cefPrefixType                  InetAddressType,
      cefPrefixAddr                  InetAddress,
      cefPrefixLen                   InetAddressPrefixLength,
      cefPrefixForwardingInfo        SnmpAdminString,
      cefPrefixPkts                  Counter32,
      cefPrefixHCPkts                Counter64,
      cefPrefixBytes                 Counter32,
      cefPrefixHCBytes               Counter64,
      cefPrefixInternalNRPkts        Counter32,                    
      cefPrefixInternalNRHCPkts      Counter64,                    
      cefPrefixInternalNRBytes       Counter32,
      cefPrefixInternalNRHCBytes     Counter64,
      cefPrefixExternalNRPkts        Counter32,                    
      cefPrefixExternalNRHCPkts      Counter64,                    
      cefPrefixExternalNRBytes       Counter32,                       
      cefPrefixExternalNRHCBytes     Counter64                       
   }

   cefPrefixType OBJECT-TYPE
      SYNTAX      InetAddressType
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The Network Prefix Type.
          This object specifies the address type
          used for cefPrefixAddr.

          Prefix entries are only valid for the address
          type of ipv4(1) and ipv6(2)." 
      ::= { cefPrefixEntry 1 }

   cefPrefixAddr OBJECT-TYPE
      SYNTAX      InetAddress
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The Network Prefix Address.
          The type of this address is determined by
          the value of the cefPrefixType object.
          This object is a Prefix Address containing the 
          prefix with length specified by cefPrefixLen. 
          Any bits beyond the length specified by
          cefPrefixLen are zeroed." 
      ::= { cefPrefixEntry 2 }

   cefPrefixLen OBJECT-TYPE
      SYNTAX      InetAddressPrefixLength
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "Length in bits of the FIB Address prefix."
      ::= { cefPrefixEntry 3 }

   cefPrefixForwardingInfo OBJECT-TYPE
       SYNTAX      SnmpAdminString
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
          "This object indicates the associated forwarding element
           selection entries in cefFESelectionTable.
           The value of this object is index value (cefFESelectionName)
           of cefFESelectionTable."  
       ::= { cefPrefixEntry 4 }

   cefPrefixPkts OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable per prefix
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'perPrefix' 
          accounting), then this object represents the 
          number of packets switched to this prefix." 
      ::= { cefPrefixEntry 5 }

   cefPrefixHCPkts OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable per prefix
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'perPrefix' 
          accounting), then this object represents the 
          number of packets switched to this prefix. 

          This object is a 64-bit version of 
          cefPrefixPkts." 
      ::= { cefPrefixEntry 6 }

   cefPrefixBytes OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable per prefix
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'perPrefix' 
          accounting), then this object represents the 
          number of bytes switched to this prefix."
      ::= { cefPrefixEntry 7 }

   cefPrefixHCBytes OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable per prefix
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'perPrefix' 
          accounting), then this object represents the 
          number of bytes switched to this prefix.

          This object is a 64-bit version of 
          cefPrefixBytes." 
      ::= { cefPrefixEntry 8 }

   cefPrefixInternalNRPkts OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable non-recursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents the number
          of non-recursive packets in the internal bucket
          switched using this prefix."
      ::= { cefPrefixEntry 9 }

   cefPrefixInternalNRHCPkts OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable non-recursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents the number
          of non-recursive packets in the internal bucket
          switched using this prefix.

          This object is a 64-bit version of 
          cefPrefixInternalNRPkts."
      ::= { cefPrefixEntry 10 }

   cefPrefixInternalNRBytes OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable nonRecursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents 
          the number of non-recursive bytes in the internal
          bucket switched using this prefix."
      ::= { cefPrefixEntry 11 }

   cefPrefixInternalNRHCBytes OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable nonRecursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents 
          the number of non-recursive bytes in the internal
          bucket switched using this prefix.

          This object is a 64-bit version of 
          cefPrefixInternalNRBytes." 
      ::= { cefPrefixEntry 12 }

   cefPrefixExternalNRPkts OBJECT-TYPE
      SYNTAX       Counter32
      UNITS        "packets"
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "If CEF accounting is set to enable non-recursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents the number
          of non-recursive packets in the external bucket
          switched using this prefix."
      ::= { cefPrefixEntry 13 }

   cefPrefixExternalNRHCPkts OBJECT-TYPE
      SYNTAX       Counter64
      UNITS        "packets"
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "If CEF accounting is set to enable non-recursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents the number
          of non-recursive packets in the external bucket
          switched using this prefix.

          This object is a 64-bit version of 
          cefPrefixExternalNRPkts."
      ::= { cefPrefixEntry 14 }

   cefPrefixExternalNRBytes OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable nonRecursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents 
          the number of non-recursive bytes in the external
          bucket switched using this prefix."
      ::= { cefPrefixEntry 15 }

   cefPrefixExternalNRHCBytes OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "If CEF accounting is set to enable nonRecursive
          accounting (value of cefCfgAccountingMap object in 
          the cefCfgEntry is set to enable 'nonRecursive' 
          accounting), then this object represents 
          the number of non-recursive bytes in the external
          bucket switched using this prefix.

          This object is a 64-bit version of 
          cefPrefixExternalNRBytes."
      ::= { cefPrefixEntry 16 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Longest Match Prefix Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   cefLMPrefixSpinLock OBJECT-TYPE
      SYNTAX       TestAndIncr
      MAX-ACCESS   read-write
      STATUS       current
      DESCRIPTION 
         "An advisory lock used to allow cooperating SNMP
          Command Generator applications to coordinate their
          use of the Set operation in creating Longest
          Match Prefix Entries in cefLMPrefixTable.

          When creating a new longest prefix match entry,
          the value of cefLMPrefixSpinLock should be retrieved.  
          The destination address should be determined to be
          unique by the SNMP Command Generator application by
          consulting the cefLMPrefixTable. Finally, the longest 
          prefix entry may be created (Set), including the
          advisory lock.
                 
          If another SNMP Command Generator application has
          altered the longest prefix entry in the meantime, 
          then the spin lock's value will have changed, 
          and so this creation will fail because it will specify
          the wrong value for the spin lock.

          Since this is an advisory lock, the use of this lock
          is not enforced, but not using this lock may lead
          to conflict with the another SNMP command responder 
          application which may also be acting on the
          cefLMPrefixTable."
      ::= { cefFIB 3 }

   cefLMPrefixTable OBJECT-TYPE
      SYNTAX       SEQUENCE OF CefLMPrefixEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
         "A table of Longest Match Prefix Query requests.

          Generator application should utilize the
          cefLMPrefixSpinLock to try to avoid collisions.
          See DESCRIPTION clause of cefLMPrefixSpinLock."
      ::= { cefFIB 4 }

   cefLMPrefixEntry OBJECT-TYPE
      SYNTAX      CefLMPrefixEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the managed device, then each
          entry represents a longest Match Prefix request.

          A management station wishing to get the longest
          Match prefix for a given destination address
          should create the associate instance of the
          row status. The row status should be set to
          active(1) to initiate the request. Note that 
          this entire procedure may be initiated via a 
          single set request which specifies a row status 
          of createAndGo(4).

          Once the request completes, the management station 
          should retrieve the values of the objects of 
          interest, and should then delete the entry.  In order 
          to prevent old entries from clogging the table, 
          entries will be aged out, but an entry will never be 
          deleted within 5 minutes of completion.
          Entries are lost after an agent restart.

          I.e. to find out the longest prefix match for 
          destination address of A.B.C.D on entity whose
          entityPhysicalIndex is 1, the Management station
          will create an entry in cefLMPrefixTable with
          cefLMPrefixRowStatus.1(entPhysicalIndex).1(ipv4).A.B.C.D
          set to createAndGo(4). Management Station may query the
          value of objects cefLMPrefix and cefLMPrefixLen
          to find out the corresponding prefix entry from the
          cefPrefixTable once the value of cefLMPrefixState
          is set to matchFound(2).

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF.
         "
      INDEX { entPhysicalIndex, 
              cefLMPrefixDestAddrType,
              cefLMPrefixDestAddr }
      ::= { cefLMPrefixTable 1}

   CefLMPrefixEntry ::= SEQUENCE {
      cefLMPrefixDestAddrType          InetAddressType,
      cefLMPrefixDestAddr              InetAddress,
      cefLMPrefixState                 CefPrefixSearchState,
      cefLMPrefixAddr                  InetAddress,
      cefLMPrefixLen                   InetAddressPrefixLength,
      cefLMPrefixRowStatus             RowStatus
   }

   cefLMPrefixDestAddrType OBJECT-TYPE
      SYNTAX      InetAddressType
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The Destination Address Type.
          This object specifies the address type
          used for cefLMPrefixDestAddr.

          Longest Match Prefix entries are only valid 
          for the address type of ipv4(1) and ipv6(2)." 
      ::= { cefLMPrefixEntry 1 }

   cefLMPrefixDestAddr OBJECT-TYPE
      SYNTAX      InetAddress
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The Destination Address.
          The type of this address is determined by
          the value of the cefLMPrefixDestAddrType object." 
      ::= { cefLMPrefixEntry 2 }

   cefLMPrefixState OBJECT-TYPE
      SYNTAX      CefPrefixSearchState
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Indicates the state of this prefix search request."
      ::= { cefLMPrefixEntry 3 } 

   cefLMPrefixAddr OBJECT-TYPE
      SYNTAX       InetAddress
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "The Network Prefix Address. Index to the cefPrefixTable.
          The type of this address is determined by
          the value of the cefLMPrefixDestAddrType object."
      ::= { cefLMPrefixEntry 4 }

   cefLMPrefixLen OBJECT-TYPE
      SYNTAX       InetAddressPrefixLength
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "The Network Prefix Length. Index to the cefPrefixTable."
      ::= { cefLMPrefixEntry 5 }

   cefLMPrefixRowStatus OBJECT-TYPE
      SYNTAX        RowStatus
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
         "The status of this table entry.  Once the entry 
          status is set to active(1), the associated entry 
          cannot be modified until the request completes
          (cefLMPrefixState transitions to matchFound(2) 
          or noMatchFound(3)).

          Once the longest match request has been created
          (i.e. the cefLMPrefixRowStatus has been made active),
          the entry cannot be modified - the only operation
          possible after this is to delete the row."
      ::= { cefLMPrefixEntry 6 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Path Table 
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefPathTable OBJECT-TYPE
      SYNTAX        SEQUENCE OF CefPathEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "CEF prefix path is a valid route to reach to a 
          destination IP prefix. Multiple paths may exist 
          out of a router to the same destination prefix. 
          This table specify lists of CEF paths."
      ::= { cefFIB 5 }
    
   cefPathEntry OBJECT-TYPE
      SYNTAX        CefPathEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contain a CEF prefix path.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX  { entPhysicalIndex, 
               cefPrefixType,
               cefPrefixAddr,
               cefPrefixLen,
               cefPathId
             }
      ::= { cefPathTable 1 }
    
   CefPathEntry ::= SEQUENCE {
      cefPathId                 Integer32,
      cefPathType               CefPathType,     
      cefPathInterface          InterfaceIndexOrZero, 
      cefPathNextHopAddr        InetAddress,
      cefPathRecurseVrfName     MplsVpnId
   }
    
   cefPathId OBJECT-TYPE
      SYNTAX        Integer32 (1..2147483647)
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "The locally arbitrary, but unique identifier associated
          with this prefix path entry."
      ::= { cefPathEntry 1 }
   
   cefPathType OBJECT-TYPE
      SYNTAX        CefPathType   
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
         "Type for this CEF Path."
      ::= { cefPathEntry 2 }

   cefPathInterface OBJECT-TYPE
      SYNTAX        InterfaceIndexOrZero
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
         "Interface associated with this CEF path.

          A value of zero for this object will indicate
          that no interface is associated with this path 
          entry."
      ::= { cefPathEntry 3 }

   cefPathNextHopAddr OBJECT-TYPE
      SYNTAX        InetAddress
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
         "Next hop address associated with this CEF path.

          The value of this object is only relevant
          for attached next hop and recursive next hop  
          path types (when the object cefPathType is
          set to attachedNexthop(4) or recursiveNexthop(5)).
          and will be set to zero for other path types.
 
          The type of this address is determined by
          the value of the cefPrefixType object."
      ::= { cefPathEntry 4 }

   cefPathRecurseVrfName OBJECT-TYPE
      SYNTAX        MplsVpnId
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
         "The recursive vrf name associated with this path.

          The value of this object is only relevant
          for recursive next hop path types (when the 
          object cefPathType is set to recursiveNexthop(5)),
          and '0x00' will be returned for other path types."
      ::= { cefPathEntry 5 }

   -- End of cefPathTable


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Adjacency Summary 
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefAdjSummary  OBJECT IDENTIFIER  
                  ::= { cefAdj 1 }

   cefAdjSummaryTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefAdjSummaryEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table contains the summary information
          for the cefAdjTable."
      ::= { cefAdjSummary 1 }

   cefAdjSummaryEntry OBJECT-TYPE
      SYNTAX       CefAdjSummaryEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contains the CEF Adjacency  
          summary related attributes for the
          Managed entity. A row exists for
          each adjacency link type.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex, cefAdjSummaryLinkType}
      ::= { cefAdjSummaryTable 1}

   CefAdjSummaryEntry ::= SEQUENCE {
      cefAdjSummaryLinkType                CefAdjLinkType, 
      cefAdjSummaryComplete                Unsigned32,
      cefAdjSummaryIncomplete              Unsigned32,
      cefAdjSummaryFixup                   Unsigned32,
      cefAdjSummaryRedirect                Unsigned32
   }

   cefAdjSummaryLinkType OBJECT-TYPE
      SYNTAX      CefAdjLinkType
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The link type of the adjacency."
      ::= { cefAdjSummaryEntry 1 }

   cefAdjSummaryComplete OBJECT-TYPE
      SYNTAX Unsigned32
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
         "The total number of complete adjacencies.

          The total number of adjacencies which can be used 
          to switch traffic to a neighbour."
      ::= { cefAdjSummaryEntry 2 }

   cefAdjSummaryIncomplete OBJECT-TYPE
      SYNTAX      Unsigned32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The total number of incomplete adjacencies.

          The total number of adjacencies which cannot be 
          used to switch traffic in their current state."
      ::= { cefAdjSummaryEntry 3 }

   cefAdjSummaryFixup OBJECT-TYPE
      SYNTAX      Unsigned32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The total number of adjacencies for which
          the Layer 2 encapsulation string (header) may be 
          updated (fixed up) at packet switch time."
      ::= { cefAdjSummaryEntry 4 }

   cefAdjSummaryRedirect OBJECT-TYPE
      SYNTAX       Unsigned32
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "The total number of adjacencies for which 
          ip redirect (or icmp redirection) is enabled.
          The value of this object is only relevant for
          ipv4 and ipv6 link type (when the index object 
          cefAdjSummaryLinkType value is ipv4(1) or ipv6(2))
          and will be set to zero for other link types.
         "
      REFERENCE
        "1. Internet Architecture Extensions for Shared Media,
            RFC 1620, May 1994."
      ::= { cefAdjSummaryEntry 5 }
 
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Adjacency Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefAdjTable OBJECT-TYPE
      SYNTAX       SEQUENCE OF CefAdjEntry
      MAX-ACCESS   not-accessible
      STATUS       current
      DESCRIPTION
         "A list of CEF adjacencies."
      ::= { cefAdj 2 }

   cefAdjEntry OBJECT-TYPE
      SYNTAX      CefAdjEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contains the adjacency 
          attributes. Adjacency entries may exist
          for all the interfaces on which packets
          can be switched out of the device.
          The interface is instantiated by ifIndex.  
          Therefore, the interface index must have been
          assigned, according to the applicable procedures,
          before it can be meaningfully used.
          Generally, this means that the interface must exist.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { 
              entPhysicalIndex, 
              ifIndex,
              cefAdjNextHopAddrType,
              cefAdjNextHopAddr,
              cefAdjConnId,
              cefAdjSummaryLinkType
            }
      ::= { cefAdjTable 1}

   CefAdjEntry ::= SEQUENCE {
      cefAdjNextHopAddrType       InetAddressType,
      cefAdjNextHopAddr           InetAddress,
      cefAdjConnId                Unsigned32,
      cefAdjSource                CefAdjacencySource,
      cefAdjEncap                 SnmpAdminString,       
      cefAdjFixup                 SnmpAdminString,      
      cefAdjMTU                   Unsigned32,
      cefAdjForwardingInfo        SnmpAdminString,  
      cefAdjPkts                  Counter32,
      cefAdjHCPkts                Counter64,
      cefAdjBytes                 Counter32,
      cefAdjHCBytes               Counter64
   }


   cefAdjNextHopAddrType OBJECT-TYPE
      SYNTAX        InetAddressType
      MAX-ACCESS    not-accessible 
      STATUS        current
      DESCRIPTION
         "Address type for the cefAdjNextHopAddr.
          This object specifies the address type
          used for cefAdjNextHopAddr. 

          Adjacency entries are only valid for the 
          address type of ipv4(1) and ipv6(2)." 
      ::= { cefAdjEntry 1 }

   cefAdjNextHopAddr OBJECT-TYPE
      SYNTAX        InetAddress
      MAX-ACCESS    not-accessible 
      STATUS        current
      DESCRIPTION
         "The next Hop address for this adjacency.
          The type of this address is determined by
          the value of the cefAdjNextHopAddrType object." 
      ::= { cefAdjEntry 2 }

   cefAdjConnId OBJECT-TYPE
      SYNTAX        Unsigned32(0 | 1..4294967295)
      MAX-ACCESS    not-accessible 
      STATUS        current
      DESCRIPTION
         "In cases where cefLinkType, interface and the
          next hop address are not able to uniquely define
          an adjacency entry (e.g. ATM and Frame Relay
          Bundles), this object is a unique identifier
          to differentiate between these adjacency entries. 

          In all the other cases the value of this 
          index object will be 0."
      ::= { cefAdjEntry 3 }

   cefAdjSource OBJECT-TYPE
      SYNTAX       CefAdjacencySource
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "If the adjacency is created because some neighbour
          discovery mechanism has discovered a neighbour
          and all the information required to build a frame header to
          encapsulate traffic to the neighbour is available
          then the source of adjacency is set to the mechanism
          by which the adjacency is learned."
      ::= { cefAdjEntry 4 }

   cefAdjEncap OBJECT-TYPE
      SYNTAX      SnmpAdminString
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The layer 2 encapsulation string to be used
          for sending the packet out using this adjacency."
      ::= { cefAdjEntry 5 }

   cefAdjFixup OBJECT-TYPE
      SYNTAX      SnmpAdminString
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "For the cases, where the encapsulation string
          is decided at packet switch time, the adjacency 
          encapsulation string specified by object cefAdjEncap 
          require a fixup. I.e. for the adjacencies out of IP 
          Tunnels, the string prepended is an IP header which has 
          fields which can only be setup at packet switch time.
 
          The value of this object represent the kind of fixup
          applied to the packet.

          If the encapsulation string doesn't require any fixup,
          then the value of this object will be of zero length."
      ::= { cefAdjEntry 6 }

   cefAdjMTU OBJECT-TYPE
      SYNTAX      Unsigned32(0..65535)
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The Layer 3 MTU which can be transmitted using 
          this adjacency."
      ::= { cefAdjEntry 7 }

   cefAdjForwardingInfo OBJECT-TYPE
      SYNTAX      SnmpAdminString
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "This object selects a forwarding info entry 
          defined in the cefFESelectionTable. The 
          selected target is defined by an entry in the
          cefFESelectionTable whose index value (cefFESelectionName) 
          is equal to this object.

          The value of this object will be of zero length if
          this adjacency entry is the last forwarding 
          element in the forwarding path."
      ::= { cefAdjEntry 8 }

   cefAdjPkts OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of pkts transmitted using this adjacency."
      ::= { cefAdjEntry 9 }

   cefAdjHCPkts OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of pkts transmitted using this adjacency.
          This object is a 64-bit version of cefAdjPkts." 
      ::= { cefAdjEntry 10 }

   cefAdjBytes OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of bytes transmitted using this adjacency."
      ::= { cefAdjEntry 11 }

   cefAdjHCBytes OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of bytes transmitted using this adjacency.
          This object is a 64-bit version of cefAdjBytes." 
      ::= { cefAdjEntry 12 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Forwarding Element Selection Table 
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefFESelectionTable OBJECT-TYPE
      SYNTAX        SEQUENCE OF CefFESelectionEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "A list of forwarding element selection entries."
      ::= { cefFE 1 }
    
   cefFESelectionEntry OBJECT-TYPE
      SYNTAX        CefFESelectionEntry
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contain a CEF forwarding element
          selection list.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX  { entPhysicalIndex, 
               cefFESelectionName, 
               cefFESelectionId }
      ::= { cefFESelectionTable 1 }
    
   CefFESelectionEntry ::= SEQUENCE {
      cefFESelectionName                SnmpAdminString,
      cefFESelectionId                  Integer32,
      cefFESelectionSpecial             CefForwardingElementSpecialType,
      cefFESelectionLabels              CefMplsLabelList,
      cefFESelectionAdjLinkType         CefAdjLinkType,
      cefFESelectionAdjInterface        InterfaceIndexOrZero,
      cefFESelectionAdjNextHopAddrType  InetAddressType,
      cefFESelectionAdjNextHopAddr      InetAddress,
      cefFESelectionAdjConnId           Unsigned32,
      cefFESelectionVrfName             MplsVpnId,
      cefFESelectionWeight              Unsigned32 
   }
    
   cefFESelectionName OBJECT-TYPE
      SYNTAX        SnmpAdminString (SIZE(1..32))
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "The locally arbitrary, but unique identifier used
          to select a set of forwarding element lists."
      ::= { cefFESelectionEntry 1 }
    
   cefFESelectionId OBJECT-TYPE
      SYNTAX        Integer32 (1..2147483647)
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "Secondary index to identify a forwarding elements List 
          in this Table." 
      ::= { cefFESelectionEntry 2 }

   cefFESelectionSpecial OBJECT-TYPE
      SYNTAX        CefForwardingElementSpecialType
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
         "Special processing for a destination
          is indicated through the use of special 
          forwarding element. 

          If the forwarding element list contains the 
          special forwarding element, then this object 
          represents the type of special forwarding element."
      ::= { cefFESelectionEntry 3 }

   cefFESelectionLabels OBJECT-TYPE
      SYNTAX        CefMplsLabelList
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "This object represent the MPLS Labels 
           associated with this forwarding Element List.

           The value of this object will be irrelevant and will
           be set to zero length if the forwarding element list 
           doesn't contain a label forwarding element. A zero 
           length label list will indicate that there is no label
           forwarding element associated with this selection entry."
      ::= { cefFESelectionEntry 4 }

   cefFESelectionAdjLinkType OBJECT-TYPE
      SYNTAX        CefAdjLinkType
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "This object represent the link type for
           the adjacency associated with this forwarding 
           Element List.

           The value of this object will be irrelevant and will
           be set to unknown(5) if the forwarding element list 
           doesn't contain an adjacency forwarding element."
      ::= { cefFESelectionEntry 5 }

   cefFESelectionAdjInterface OBJECT-TYPE
      SYNTAX        InterfaceIndexOrZero
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "This object represent the interface for
           the adjacency associated with this forwarding 
           Element List.

           The value of this object will be irrelevant and will
           be set to zero if the forwarding element list doesn't 
           contain an adjacency forwarding element."
      ::= { cefFESelectionEntry 6 }

   cefFESelectionAdjNextHopAddrType OBJECT-TYPE
      SYNTAX        InetAddressType
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "This object represent the next hop address type for
           the adjacency associated with this forwarding 
           Element List.

           The value of this object will be irrelevant and will
           be set to unknown(0) if the forwarding element list 
           doesn't contain an adjacency forwarding element."
      ::= { cefFESelectionEntry 7 }

   cefFESelectionAdjNextHopAddr OBJECT-TYPE
      SYNTAX        InetAddress
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
          "This object represent the next hop address for
           the adjacency associated with this forwarding 
           Element List.

           The value of this object will be irrelevant and will
           be set to zero if the forwarding element list doesn't 
           contain an adjacency forwarding element."
      ::= { cefFESelectionEntry 8 }

   cefFESelectionAdjConnId OBJECT-TYPE
       SYNTAX        Unsigned32(0 | 1..4294967295)
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
          "This object represent the connection id for
           the adjacency associated with this forwarding 
           Element List.

           The value of this object will be irrelevant and will
           be set to zero if the forwarding element list doesn't 
           contain an adjacency forwarding element. 
         
           In cases where cefFESelectionAdjLinkType, interface 
           and the next hop address are not able to uniquely 
           define an adjacency entry (e.g. ATM and Frame Relay
           Bundles), this object is a unique identifier
           to differentiate between these adjacency entries." 
      ::= { cefFESelectionEntry 9 }

   cefFESelectionVrfName OBJECT-TYPE
       SYNTAX        MplsVpnId
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
          "This object represent the Vrf name for
           the lookup associated with this forwarding 
           Element List.

           The value of this object will be irrelevant and will
           be set to a string containing the single octet
           0x00 if the forwarding element list 
           doesn't contain a lookup forwarding element."
      ::= { cefFESelectionEntry 10 }

   cefFESelectionWeight OBJECT-TYPE
       SYNTAX        Unsigned32(0 | 1..4294967295)
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
          "This object represent the weighting for 
           load balancing between multiple Forwarding Element
           Lists. The value of this object will be zero if
           load balancing is associated with this selection
           entry."
      ::= { cefFESelectionEntry 11 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Cfg Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   
   cefCfgTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefCfgEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table contains global config parameter 
          of CEF on the Managed device."
      ::= { cefGlobal 1 }

   cefCfgEntry OBJECT-TYPE
      SYNTAX      CefCfgEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If the Managed device supports CEF, 
          each entry contains the CEF config 
          parameter for the managed entity.
          A row may exist for each IP version type
          (v4 and v6) depending upon the IP version
          supported on the device.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex, 
              cefFIBIpVersion }
      ::= { cefCfgTable 1}

   CefCfgEntry ::= SEQUENCE {
      cefCfgAdminState                    CefAdminStatus, 
      cefCfgOperState                     CefOperStatus,
      cefCfgDistributionAdminState        CefAdminStatus,
      cefCfgDistributionOperState         CefOperStatus,
      cefCfgAccountingMap                 BITS,
      cefCfgLoadSharingAlgorithm          INTEGER,
      cefCfgLoadSharingID                 Unsigned32,
      cefCfgTrafficStatsLoadInterval      Unsigned32,
      cefCfgTrafficStatsUpdateRate        Unsigned32
   }

   cefCfgAdminState   OBJECT-TYPE
      SYNTAX      CefAdminStatus
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The desired state of CEF."
      ::= { cefCfgEntry 1 }
   
   cefCfgOperState   OBJECT-TYPE
      SYNTAX      CefOperStatus
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The current operational state of CEF.
          
          If the cefCfgAdminState is disabled(2), then
          cefOperState will eventually go to the down(2)
          state unless some error has occurred. 

          If cefCfgAdminState is changed to enabled(1) then 
          cefCfgOperState should change to up(1) only if the 
          CEF entity is ready to forward the packets using 
          Cisco Express Forwarding (CEF) else it should remain 
          in the down(2) state. The up(1) state for this object 
          indicates that CEF entity is forwarding the packet
          using Cisco Express Forwarding."
      ::= { cefCfgEntry 2 }

   cefCfgDistributionAdminState   OBJECT-TYPE
      SYNTAX      CefAdminStatus
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The desired state of CEF distribution."
      ::= { cefCfgEntry 3 }
   
   cefCfgDistributionOperState   OBJECT-TYPE
      SYNTAX      CefOperStatus
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The current operational state of CEF distribution.
          
          If the cefCfgDistributionAdminState is disabled(2), then
          cefDistributionOperState will eventually go to the down(2)
          state unless some error has occurred.  

          If cefCfgDistributionAdminState is changed to enabled(1) 
          then cefCfgDistributionOperState should change to up(1) 
          only if the CEF entity is ready to forward the packets 
          using Distributed Cisco Express Forwarding (dCEF) else 
          it should remain in the down(2) state. The up(1) state 
          for this object indicates that CEF entity is forwarding
          the packet using Distributed Cisco Express Forwarding."
      ::= { cefCfgEntry 4 }

   cefCfgAccountingMap  OBJECT-TYPE
      SYNTAX      BITS {
                    nonRecursive(0),
                    perPrefix(1),
                    prefixLength(2)
                  }
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "This object represents a bitmap of network
          accounting options.

          CEF network accounting is disabled by default.

          CEF network accounting can be enabled 
          by selecting one or more of the following
          CEF accounting option for the value
          of this object.
           
           nonRecursive(0):  enables accounting through 
                             nonrecursive prefixes.

           perPrefix(1):     enables the collection of the numbers 
                             of pkts and bytes express forwarded
                             to a destination (prefix)

           prefixLength(2):  enables accounting through 
                             prefixlength.        
         
           Once the accounting is enabled, the corresponding stats
           can be retrieved from the cefPrefixTable and
           cefStatsPrefixLenTable.
           
          "
      ::= { cefCfgEntry 5 }

   cefCfgLoadSharingAlgorithm  OBJECT-TYPE
      SYNTAX      INTEGER { 
                     none     (1), -- Load sharing is disabled
                     original (2),
                     tunnel   (3),
                     universal(4)
                  }
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Indicates the CEF Load balancing algorithm.

          Setting this object to none(1) will disable
          the Load sharing for the specified entry.
          
          CEF load balancing can be enabled by setting 
          this object to one of following Algorithms:

           original(2)  : This algorithm is based on a 
                          source and destination hash 

           tunnel(3)    : This algorithm is used in 
                          tunnels environments or in
                          environments where there are
                          only a few source 
                            
           universal(4)  : This algorithm uses a source and 
                           destination and ID hash

          If the value of this object is set to 'tunnel'
          or 'universal', then the FIXED ID for these
          algorithms may be specified by the managed 
          object cefLoadSharingID. 
         "
      ::= { cefCfgEntry 6 }

   cefCfgLoadSharingID  OBJECT-TYPE
      SYNTAX      Unsigned32(0 | 1..4294967295)
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The Fixed ID associated with the managed object
          cefCfgLoadSharingAlgorithm. The hash of this object
          value may be used by the Load Sharing Algorithm.

          The value of this object is not relevant and will
          be set to zero if the value of managed object 
          cefCfgLoadSharingAlgorithm is set to none(1) or original(2).
          The default value of this object is calculated by
          the device at the time of initialization."
      ::= { cefCfgEntry 7 }

   cefCfgTrafficStatsLoadInterval  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "seconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The interval time over which the CEF traffic statistics
          are collected."
      ::= { cefCfgEntry 8 }

   cefCfgTrafficStatsUpdateRate  OBJECT-TYPE
      SYNTAX      Unsigned32(0 | 1..65535)
      UNITS       "seconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The frequency with which the line card sends the
          traffic load statistics to the Router Processor.

          Setting the value of this object to 0 will disable
          the CEF traffic statistics collection."
      ::= { cefCfgEntry 9 }

   cefResourceTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefResourceEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table contains global resource 
          information of CEF on the Managed device."
      ::= { cefGlobal 2 }

   cefResourceEntry OBJECT-TYPE
      SYNTAX      CefResourceEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If the Managed device supports CEF,
          each entry contains the CEF Resource 
          parameters for the managed entity.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex }
      ::= { cefResourceTable 1}

   CefResourceEntry ::= SEQUENCE {
      cefResourceMemoryUsed                Gauge32,
      cefResourceFailureReason             CefFailureReason 
   }

   cefResourceMemoryUsed OBJECT-TYPE
      SYNTAX      Gauge32 
      UNITS       "bytes"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Indicates the number of bytes from
          the Processor Memory Pool that
          are currently in use by CEF on the
          managed entity."
      ::= { cefResourceEntry 1 }

   cefResourceFailureReason  OBJECT-TYPE
      SYNTAX      CefFailureReason 
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The CEF resource failure reason which may lead to CEF
          being disabled on the managed entity."
      ::= { cefResourceEntry 2 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Interface Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   
  cefIntTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefIntEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This Table contains interface specific
          information of CEF on the Managed
          device."
      ::= { cefInterface 1 }

   cefIntEntry OBJECT-TYPE
      SYNTAX      CefIntEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the Managed device, 
          each entry contains the CEF attributes 
          associated with an interface.
          The interface is instantiated by ifIndex.  
          Therefore, the interface index must have been
          assigned, according to the applicable procedures,
          before it can be meaningfully used.
          Generally, this means that the interface must exist.
        
          A row may exist for each IP version type
          (v4 and v6) depending upon the IP version
          supported on the device.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex, cefFIBIpVersion, ifIndex }
      ::= { cefIntTable 1}

   CefIntEntry ::= SEQUENCE {
      cefIntSwitchingState             INTEGER,
      cefIntLoadSharing                INTEGER,
      cefIntNonrecursiveAccouting      INTEGER
   }

   cefIntSwitchingState  OBJECT-TYPE
      SYNTAX      INTEGER {
                     cefEnabled     (1),
                     distCefEnabled (2),
                     cefDisabled    (3)
                  }
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The CEF switching State for the interface. 
          If CEF is enabled but distributed CEF(dCEF) is
          disabled then CEF is in cefEnabled(1) state.
          
          If distributed CEF is enabled, then CEF is in 
          distCefEnabled(2) state. The cefDisabled(3) state
          indicates that CEF is disabled.

          The CEF switching state is only applicable to the
          received packet on the interface."
      ::= { cefIntEntry 1 }

   cefIntLoadSharing OBJECT-TYPE
      SYNTAX     INTEGER {
                    perPacket      (1),
                    perDestination (2)
                 }
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
         "The status of load sharing on the
          interface.

          perPacket(1) : Router to send data packets
                         over successive equal-cost paths
                         without regard to individual hosts
                         or user sessions.

          perDestination(2) : Router to use multiple, equal-cost
                              paths to achieve load sharing

          Load sharing is enabled by default 
          for an interface when CEF is enabled." 
      ::= { cefIntEntry 2 }


    cefIntNonrecursiveAccouting  OBJECT-TYPE
      SYNTAX     INTEGER { 
                    internal(1),
                    external(2)
                 }
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
         "The CEF accounting mode for the interface.
          CEF prefix based non-recursive accounting 
          on an interface can be configured to store 
          the stats for non-recursive prefixes in a internal 
          or external bucket.
      
          internal(1)  :  Count input traffic in the nonrecursive
                          internal bucket

          external(2)  :  Count input traffic in the nonrecursive
                          external bucket

          The value of this object will only be effective if 
          value of the object cefAccountingMap is set to enable
          nonRecursive(1) accounting."
      ::= { cefIntEntry 3 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Peer Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefPeerTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefPeerEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "Entity acting as RP (Routing Processor) keeps
          the CEF states for the line card entities and
          communicates with the line card entities using
          XDR. This Table contains the CEF information 
          related to peer entities on the managed device."
      ::= { cefPeer 1 }

   cefPeerEntry OBJECT-TYPE
      SYNTAX      CefPeerEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contains the CEF related attributes 
          associated with a CEF peer entity.

          entPhysicalIndex and entPeerPhysicalIndex are
          also indexes for this table which represents
          entities of 'module' entPhysicalClass which are
          capable of running CEF."
      INDEX { entPhysicalIndex, entPeerPhysicalIndex  }
      ::= { cefPeerTable 1}

   CefPeerEntry ::= SEQUENCE {
      entPeerPhysicalIndex           PhysicalIndex, 
      cefPeerOperState               INTEGER,
      cefPeerNumberOfResets          Counter32        
   }

   entPeerPhysicalIndex    OBJECT-TYPE
      SYNTAX      PhysicalIndex
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "The entity index for the CEF peer entity.
          Only the entities of 'module' 
          entPhysicalClass are included here."
      ::= { cefPeerEntry 1 }

   cefPeerOperState  OBJECT-TYPE
      SYNTAX     INTEGER { 
                    peerDisabled (1),
                    peerUp       (2),
                    peerHold     (3)
                 }
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The current CEF operational state of the CEF peer entity.

          Cef peer entity oper state will be peerDisabled(1) in 
          the following condition:

             : Cef Peer entity encounters fatal error i.e. resource
               allocation failure, ipc failure etc

             : When a reload/delete request is received from the Cef 
               Peer Entity

          Once the peer entity is up and no fatal error is encountered,
          then the value of this object will transits to the peerUp(3) 
          state.

          If the Cef Peer entity is in held stage, then the value
          of this object will be peerHold(3). Cef peer entity can only
          transit to peerDisabled(1) state from the peerHold(3) state."
      ::= { cefPeerEntry 2 }

   cefPeerNumberOfResets OBJECT-TYPE
      SYNTAX      Counter32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of times the session with CEF peer entity 
          has been reset."
      ::= { cefPeerEntry 3 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Peer FIB Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   cefPeerFIBTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefPeerFIBEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "Entity acting as RP (Routing Processor) keep
          the CEF FIB states for the line card entities and
          communicate with the line card entities using
          XDR. This Table contains the CEF FIB State 
          related to peer entities on the managed device."
      ::= { cefPeer 2 }

   cefPeerFIBEntry OBJECT-TYPE
      SYNTAX      CefPeerFIBEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry contains the CEF FIB State 
          associated a CEF peer entity.

          entPhysicalIndex and entPeerPhysicalIndex are
          also indexes for this table which represents
          entities of 'module' entPhysicalClass which are
          capable of running CEF."
      INDEX { entPhysicalIndex, 
              entPeerPhysicalIndex,
              cefFIBIpVersion  }
      ::= { cefPeerFIBTable 1}

   CefPeerFIBEntry ::= SEQUENCE {
      cefPeerFIBOperState            INTEGER      
   }

   cefPeerFIBOperState OBJECT-TYPE
      SYNTAX INTEGER { 
                peerFIBDown         (1),
                peerFIBUp           (2),
                peerFIBReloadRequest(3), 
                peerFIBReloading    (4),
                peerFIBSynced       (5)
             }
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
         "The current CEF FIB Operational State for the 
          CEF peer entity.
         "
      ::= { cefPeerFIBEntry 1 } 

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Prefix Length Stats Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   cefStatsPrefixLenTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefStatsPrefixLenEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table specifies the CEF stats based
          on the Prefix Length."
     ::= { cefStats 1 }

   cefStatsPrefixLenEntry OBJECT-TYPE
      SYNTAX      CefStatsPrefixLenEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the Managed device
          and if CEF accounting is set to enable 
          prefix length based accounting (value of 
          cefCfgAccountingMap object in the 
          cefCfgEntry is set to enable 'prefixLength' 
          accounting), each entry contains the traffic 
          statistics for a prefix length.
          A row may exist for each IP version type
          (v4 and v6) depending upon the IP version
          supported on the device.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex, 
              cefFIBIpVersion,
              cefStatsPrefixLen }
      ::= { cefStatsPrefixLenTable 1}

   CefStatsPrefixLenEntry ::= SEQUENCE {
      cefStatsPrefixLen                   InetAddressPrefixLength,
      cefStatsPrefixQueries               Counter32,
      cefStatsPrefixHCQueries             Counter64,
      cefStatsPrefixInserts               Counter32,
      cefStatsPrefixHCInserts             Counter64,
      cefStatsPrefixDeletes               Counter32,
      cefStatsPrefixHCDeletes             Counter64,
      cefStatsPrefixElements              Gauge32,
      cefStatsPrefixHCElements            CounterBasedGauge64
   }


   cefStatsPrefixLen OBJECT-TYPE
      SYNTAX      InetAddressPrefixLength
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "Length in bits of the Destination IP prefix.
          As 0.0.0.0/0 is a valid prefix, hence 
          0 is a valid prefix length."
      ::= { cefStatsPrefixLenEntry 1 }

   cefStatsPrefixQueries OBJECT-TYPE
      SYNTAX      Counter32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of queries received in the FIB database 
          for the specified IP prefix length."
      ::= { cefStatsPrefixLenEntry 2 }

   cefStatsPrefixHCQueries OBJECT-TYPE
      SYNTAX      Counter64
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of queries received in the FIB database
          for the specified IP prefix length.
          This object is a 64-bit version of 
          cefStatsPrefixQueries."
      ::= { cefStatsPrefixLenEntry 3 }

   cefStatsPrefixInserts OBJECT-TYPE
      SYNTAX      Counter32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of insert operations performed to the FIB 
          database for the specified IP prefix length."
      ::= { cefStatsPrefixLenEntry 4 }

   cefStatsPrefixHCInserts OBJECT-TYPE
      SYNTAX      Counter64
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of insert operations performed to the FIB 
          database for the specified IP prefix length.
          This object is a 64-bit version of 
          cefStatsPrefixInsert."
      ::= { cefStatsPrefixLenEntry 5 }

   cefStatsPrefixDeletes OBJECT-TYPE
      SYNTAX      Counter32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of delete operations performed to the FIB 
          database for the specified IP prefix length."
      ::= { cefStatsPrefixLenEntry 6 }

   cefStatsPrefixHCDeletes OBJECT-TYPE
      SYNTAX      Counter64
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of delete operations performed to the FIB 
          database for the specified IP prefix length.
          This object is a 64-bit version of 
          cefStatsPrefixDelete."
      ::= { cefStatsPrefixLenEntry 7 }

   cefStatsPrefixElements OBJECT-TYPE
      SYNTAX      Gauge32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Total number of elements in the FIB database for the
          specified IP prefix length."
      ::= { cefStatsPrefixLenEntry 8 }

   cefStatsPrefixHCElements OBJECT-TYPE
      SYNTAX      CounterBasedGauge64
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Total number of elements in the FIB database for the
          specified IP prefix length.
          This object is a 64-bit version of 
          cefStatsPrefixElements."
      ::= { cefStatsPrefixLenEntry 9 }



-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Switching Stats Table
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefSwitchingStatsTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefSwitchingStatsEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table specifies the CEF switch stats."
      ::= { cefStats 2 }

   cefSwitchingStatsEntry OBJECT-TYPE
      SYNTAX      CefSwitchingStatsEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If CEF is enabled on the Managed device,
          each entry specifies the switching stats.
          A row may exist for each IP version type
          (v4 and v6) depending upon the IP version
          supported on the device.

          entPhysicalIndex is also an index for this
          table which represents entities of
          'module' entPhysicalClass which are capable
          of running CEF."
      INDEX { entPhysicalIndex, 
              cefFIBIpVersion,
              cefSwitchingIndex
            }
      ::= { cefSwitchingStatsTable 1}

   CefSwitchingStatsEntry ::= SEQUENCE { 
      cefSwitchingIndex               Integer32, 
      cefSwitchingPath                SnmpAdminString,
      cefSwitchingDrop                Counter32,
      cefSwitchingHCDrop              Counter64,
      cefSwitchingPunt                Counter32,
      cefSwitchingHCPunt              Counter64,
      cefSwitchingPunt2Host           Counter32,
      cefSwitchingHCPunt2Host         Counter64
   }

   cefSwitchingIndex OBJECT-TYPE
      SYNTAX        Integer32 (1..2147483647)
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "The locally arbitrary, but unique identifier associated
          with this switching stats entry."
      ::= { cefSwitchingStatsEntry  1 }

   cefSwitchingPath OBJECT-TYPE
      SYNTAX      SnmpAdminString (SIZE(1..32))
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Switch path where the feature was executed.
          Available switch paths are platform-dependent.
          Following are the examples of switching paths:

             RIB : switching with CEF assistance

             Low-end switching (LES) : CEF switch path

             PAS : CEF turbo switch path.
         "
      ::= { cefSwitchingStatsEntry  2 }

   cefSwitchingDrop OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of packets dropped by CEF."
      ::= { cefSwitchingStatsEntry  3 }

   cefSwitchingHCDrop OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of packets dropped by CEF.
          This object is a 64-bit version of cefSwitchingDrop."
      ::= { cefSwitchingStatsEntry  4 }

   cefSwitchingPunt OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of packets that could not be switched
          in the normal path and were punted to the
          next-fastest switching vector."
      ::= { cefSwitchingStatsEntry  5 }

   cefSwitchingHCPunt OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of packets that could not be switched
          in the normal path and were punted to the
          next-fastest switching vector.
          This object is a 64-bit version of cefSwitchingPunt."
      ::= { cefSwitchingStatsEntry  6 }

   cefSwitchingPunt2Host  OBJECT-TYPE
      SYNTAX      Counter32
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of packets that could not be switched
          in the normal path and were punted to the host
          (process switching path).

          For most of the switching paths, the value of
          this object may be similar to cefSwitchingPunt."
      ::= { cefSwitchingStatsEntry  7 }

   cefSwitchingHCPunt2Host  OBJECT-TYPE
      SYNTAX      Counter64
      UNITS       "packets"
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of packets that could not be switched
          in the normal path and were punted to the host
          (process switching path).
 
          For most of the switching paths, the value of
          this object may be similar to cefSwitchingPunt.
          This object is a 64-bit version of cefSwitchingPunt2Host."
      ::= { cefSwitchingStatsEntry  8 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF IP Prefix Consistency Checker Group
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   cefCCGlobalTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefCCGlobalEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table contains CEF consistency checker
          (CC) global parameters for the managed device."
      ::= { cefCC 1 }

   cefCCGlobalEntry OBJECT-TYPE
      SYNTAX      CefCCGlobalEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If the managed device supports CEF,
          each entry contains the global consistency 
          checker parameter for the managed device.
          A row may exist for each IP version type
          (v4 and v6) depending upon the IP version
          supported on the device."
      INDEX { cefFIBIpVersion }
      ::= { cefCCGlobalTable 1}

   CefCCGlobalEntry ::= SEQUENCE {
      cefCCGlobalAutoRepairEnabled        TruthValue, 
      cefCCGlobalAutoRepairDelay          Unsigned32, 
      cefCCGlobalAutoRepairHoldDown       Unsigned32,
      cefCCGlobalErrorMsgEnabled          TruthValue,
      cefCCGlobalFullScanAction           CefCCAction,
      cefCCGlobalFullScanStatus           CefCCStatus
   }

   cefCCGlobalAutoRepairEnabled OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Once an inconsistency has been detected, 
          CEF has the ability to repair the problem. 
          This object indicates the status of auto-repair 
          function for the consistency checkers." 
      ::= { cefCCGlobalEntry 1 }

   cefCCGlobalAutoRepairDelay OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "seconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Indiactes how long the consistency checker 
          waits to fix an inconsistency.

          The value of this object has no effect when the
          value of object cefCCGlobalAutoRepairEnabled
          is 'false'."
      ::= { cefCCGlobalEntry 2 }

   cefCCGlobalAutoRepairHoldDown OBJECT-TYPE
      SYNTAX       Unsigned32
      UNITS        "seconds"
      MAX-ACCESS   read-write
      STATUS       current
      DESCRIPTION
         "Indicates how long the consistency checker
          waits to re-enable auto-repair after 
          auto-repair runs.

          The value of this object has no effect when the
          value of object cefCCGlobalAutoRepairEnabled
          is 'false'."
      ::= { cefCCGlobalEntry 3 }

   cefCCGlobalErrorMsgEnabled OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Enables the consistency checker to generate 
          an error message when it detects an inconsistency."
      ::= { cefCCGlobalEntry 4 }

   cefCCGlobalFullScanAction OBJECT-TYPE
      SYNTAX      CefCCAction
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Setting the value of this object to ccActionStart(1)
          will start the full scan consistency checkers.

          The Management station should poll the 
          cefCCGlobalFullScanStatus object to get the 
          state of full-scan operation.

          Once the full-scan operation completes (value
          of cefCCGlobalFullScanStatus object is ccStatusDone(3)), 
          the Management station should retrieve the values of the
          related stats object from the cefCCTypeTable.

          Setting the value of this object to ccActionAbort(2) will 
          abort the full-scan operation.
          
          The value of this object can't be set to ccActionStart(1), 
          if the value of object cefCCGlobalFullScanStatus
          is ccStatusRunning(2).
 
          The value of this object will be set to cefActionNone(1)
          when the full scan consistency checkers have never
          been activated.

          A Management Station cannot set the value of
          this object to cefActionNone(1)."
      DEFVAL { ccActionNone }
      ::= { cefCCGlobalEntry 5 }

   cefCCGlobalFullScanStatus OBJECT-TYPE
      SYNTAX     CefCCStatus
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "Indicates the status of the full scan consistency
          checker request."
      ::= { cefCCGlobalEntry 6 }

   --
   -- Consistency Checker Type Table
   --

   cefCCTypeTable OBJECT-TYPE
      SYNTAX SEQUENCE OF CefCCTypeEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "This table contains CEF consistency
          checker types specific parameters on the managed device.

          All detected inconsistency are signaled to the
          Management Station via cefInconsistencyDetection
          notification.
         "
      ::= { cefCC 2 }

   cefCCTypeEntry OBJECT-TYPE
      SYNTAX CefCCTypeEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
         "If the managed device supports CEF,
          each entry contains the consistency 
          checker statistics for a consistency 
          checker type.
          A row may exist for each IP version type
          (v4 and v6) depending upon the IP version
          supported on the device."
      INDEX { cefFIBIpVersion,
              cefCCType }
      ::= { cefCCTypeTable 1}

   CefCCTypeEntry ::= SEQUENCE {
      cefCCType                      CefCCType,
      cefCCEnabled                   TruthValue,
      cefCCCount                     Unsigned32,
      cefCCPeriod                    Unsigned32,
      cefCCQueriesSent               Counter32,
      cefCCQueriesIgnored            Counter32,
      cefCCQueriesChecked            Counter32,
      cefCCQueriesIterated           Counter32
   }

   cefCCType OBJECT-TYPE
      SYNTAX      CefCCType
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "Type of the consistency checker."    
      ::= { cefCCTypeEntry 1 }

   cefCCEnabled OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Enables the passive consistency checker.
          Passive consistency checkers are disabled
          by default.

          Full-scan consistency checkers are always enabled.
          An attempt to set this object to 'false' for
          an active consistency checker will result in
          'wrongValue' error."
      ::= { cefCCTypeEntry 2 }

   cefCCCount  OBJECT-TYPE
      SYNTAX      Unsigned32
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The maximum number of prefixes to check per scan.

          The default value for this object 
          depends upon the consistency checker type.

          The value of this object will be irrelevant 
          for some of the consistency checkers and
          will be set to 0.

          A Management Station cannot set the value of
          this object to 0."
      ::= { cefCCTypeEntry 3 }

   cefCCPeriod  OBJECT-TYPE
      SYNTAX      Unsigned32
      UNITS       "seconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "The period between scans for the consistency
          checker." 
      ::= { cefCCTypeEntry 4 }

   cefCCQueriesSent OBJECT-TYPE
      SYNTAX       Counter32
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "Number of prefix consistency queries sent to CEF
          forwarding databases by this consistency checker."
      ::= { cefCCTypeEntry 5 }

   cefCCQueriesIgnored OBJECT-TYPE
      SYNTAX       Counter32
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "Number of prefix consistency queries for which
          the consistency checks were not performed by this 
          consistency checker. This may be because of some
          internal error or resource failure."
      ::= { cefCCTypeEntry 6 }

   cefCCQueriesChecked OBJECT-TYPE
      SYNTAX      Counter32
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Number of prefix consistency queries processed by this 
          consistency checker."
      ::= { cefCCTypeEntry 7 }

   cefCCQueriesIterated OBJECT-TYPE
      SYNTAX        Counter32
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
         "Number of prefix consistency queries iterated back to
          the master database by this consistency checker."
      ::= { cefCCTypeEntry 8 }

   --
   -- Inconsistency Record Table
   --

   cefInconsistencyRecordTable OBJECT-TYPE
      SYNTAX      SEQUENCE OF CefInconsistencyRecordEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "This table contains CEF inconsistency
          records."
      ::= { cefCC 3 }

   cefInconsistencyRecordEntry OBJECT-TYPE
      SYNTAX      CefInconsistencyRecordEntry
      MAX-ACCESS  not-accessible
      STATUS      current
      DESCRIPTION
         "If the managed device supports CEF,
          each entry contains the inconsistency 
          record." 
      INDEX { cefFIBIpVersion, 
              cefInconsistencyRecId }
      ::= { cefInconsistencyRecordTable 1}

   CefInconsistencyRecordEntry ::= SEQUENCE {
      cefInconsistencyRecId          Integer32,
      cefInconsistencyPrefixType     InetAddressType,
      cefInconsistencyPrefixAddr     InetAddress,
      cefInconsistencyPrefixLen      InetAddressPrefixLength, 
      cefInconsistencyVrfName        MplsVpnId,
      cefInconsistencyCCType         CefCCType,
      cefInconsistencyEntity         EntPhysicalIndexOrZero,
      cefInconsistencyReason         INTEGER
   }

   cefInconsistencyRecId OBJECT-TYPE
      SYNTAX        Integer32 (1..2147483647)
      MAX-ACCESS    not-accessible
      STATUS        current
      DESCRIPTION
         "The locally arbitrary, but unique identifier associated
          with this inconsistency record entry."
      ::= { cefInconsistencyRecordEntry 1 }

   cefInconsistencyPrefixType OBJECT-TYPE
      SYNTAX       InetAddressType
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "The network prefix type associated with this inconsistency
          record."
      ::= { cefInconsistencyRecordEntry 2 }

   cefInconsistencyPrefixAddr OBJECT-TYPE
      SYNTAX      InetAddress
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The network prefix address associated with this 
          inconsistency record.

          The type of this address is determined by
          the value of the cefInconsistencyPrefixType object."
      ::= { cefInconsistencyRecordEntry 3 }

   cefInconsistencyPrefixLen OBJECT-TYPE
      SYNTAX        InetAddressPrefixLength
      MAX-ACCESS    read-only
      STATUS        current
      DESCRIPTION
         "Length in bits of the inconsistency address prefix."
      ::= { cefInconsistencyRecordEntry 4 }

   cefInconsistencyVrfName OBJECT-TYPE
      SYNTAX      MplsVpnId
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "Vrf name associated with this inconsistency record."
      ::= { cefInconsistencyRecordEntry 5 }

   cefInconsistencyCCType OBJECT-TYPE
      SYNTAX       CefCCType
      MAX-ACCESS   read-only
      STATUS       current
      DESCRIPTION
         "The type of consistency checker who generated this
          inconsistency record."
      ::= { cefInconsistencyRecordEntry 6 }

   cefInconsistencyEntity OBJECT-TYPE
      SYNTAX      EntPhysicalIndexOrZero
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The entity for which this inconsistency record was 
          generated. The value of this object will be 
          irrelevant and will be set to 0 when the inconsisency 
          record is applicable for all the entities."
      ::= { cefInconsistencyRecordEntry 7 }

   cefInconsistencyReason OBJECT-TYPE
      SYNTAX     INTEGER { 
                    missing    (1),
                    checksumErr(2),
                    unknown    (3)
                 }
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "The reason for generating this inconsistency record. 

             missing(1):        the prefix is missing

             checksumErr(2):    checksum error was found

             unknown(3):        reason is unknown
          "
      ::= { cefInconsistencyRecordEntry 8 }

   -- 
   -- Global objects for CEF Inconsistency
   --

   -- last change time stamp for the whole MIB
   entLastInconsistencyDetectTime OBJECT-TYPE
      SYNTAX      TimeStamp
      MAX-ACCESS  read-only
      STATUS      current
      DESCRIPTION
         "The value of sysUpTime at the time an
          inconsistency is detecetd." 
      ::= { cefCC 4 }

   cefInconsistencyReset OBJECT-TYPE
      SYNTAX      CefCCAction
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Setting the value of this object to ccActionStart(1)
          will reset all the active consistency checkers.

          The Management station should poll the 
          cefInconsistencyResetStatus object to get the 
          state of inconsistency reset operation.

          This operation once started, cannot be aborted.
          Hence, the value of this object cannot be set to
          ccActionAbort(2).
          
          The value of this object can't be set to ccActionStart(1), 
          if the value of object cefInconsistencyResetStatus
          is ccStatusRunning(2).
          "
      DEFVAL { ccActionNone }
      ::= { cefCC 5 }

   cefInconsistencyResetStatus OBJECT-TYPE
      SYNTAX     CefCCStatus
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
         "Indicates the status of the consistency reset
          request."
      ::= { cefCC 6 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- The CEF Notif Control Group
--
-- This group of objects controls the sending of CEF Notifications
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   cefResourceFailureNotifEnable OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Indicates whether or not a notification should be
          generated on the detection of CEF resource Failure."
      ::= { cefNotifCntl 1 }

   cefPeerStateChangeNotifEnable OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Indicates whether or not a notification should be
          generated on the detection of CEF peer state change."
      ::= { cefNotifCntl 2 }

   cefPeerFIBStateChangeNotifEnable OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Indicates whether or not a notification should be
          generated on the detection of CEF FIB peer state change."
      ::= { cefNotifCntl 3 }

   cefNotifThrottlingInterval OBJECT-TYPE
      SYNTAX      Integer32 (0 | 1..3600)
      UNITS       "seconds"
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "This object controls the generation of the
          cefInconsistencyDetection notification.

          If this object has a value of zero,
          then the throttle control is disabled.

          If this object has a non-zero value, then the agent
          must not generate more than one 
          cefInconsistencyDetection 'notification-event' in the 
          indicated period, where a 'notification-event' is the
          transmission of a single trap
          or inform PDU to a list of notification destinations.

          If additional inconsistency is detected within the 
          throttling period, then notification-events
          for these inconsistencies should be suppressed by the agent
          until the current throttling period expires.  At the end of a
          throttling period, one notification-event should be generated
          if any inconsistency was detected since the start of the 
          throttling period. In such a case,  another throttling period
          is started right away.

          An NMS should periodically poll cefInconsistencyRecordTable
          to detect any missed cefInconsistencyDetection
          notification-events, e.g., due to throttling or transmission
          loss.
           
          If cefNotifThrottlingInterval notification generation
          is enabled, the suggested default throttling period is
          60 seconds, but generation of the cefInconsistencyDetection
          notification should be disabled by default.

          If the agent is capable of storing non-volatile
          configuration, then the value of this object must be
          restored after a re-initialization of the management
          system.

          The actual transmission of notifications is controlled
          via the MIB modules in RFC 3413."
      DEFVAL { 0 }
      ::= { cefNotifCntl 4 }

   cefInconsistencyNotifEnable OBJECT-TYPE
      SYNTAX      TruthValue
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
         "Indicates whether cefInconsistencyDetection notification
          should be generated for this managed device."
      ::= { cefNotifCntl 5 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- CEF Notifications
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   cefResourceFailure NOTIFICATION-TYPE
      OBJECTS {
                cefResourceFailureReason
              }
      STATUS  current
      DESCRIPTION
         "A cefResourceFailure notification is generated when 
          CEF resource failure on the managed entity is 
          detected. The reason for this failure is indicated 
          by cefResourcefFailureReason."
      ::= { ciscoCefMIBNotifs 1 }

   cefPeerStateChange NOTIFICATION-TYPE
      OBJECTS {
                cefPeerOperState
              }
      STATUS  current
      DESCRIPTION
         "A cefPeerStateChange notification is generated if
          change in cefPeerOperState is detected for the
          peer entity."
      ::= { ciscoCefMIBNotifs 2 }

   cefPeerFIBStateChange NOTIFICATION-TYPE
      OBJECTS {
                cefPeerFIBOperState
              }
      STATUS  current
      DESCRIPTION
         "A cefPeerFIBStateChange notification is generated if
          change in cefPeerFIBOperState is detected for the
          peer entity."
      ::= { ciscoCefMIBNotifs 3 }

   cefInconsistencyDetection NOTIFICATION-TYPE
      OBJECTS {
                entLastInconsistencyDetectTime
              }
      STATUS  current
      DESCRIPTION
         "A cefInconsistencyDetection notification is generated
          when CEF consistency checkers detects an inconsistent 
          prefix in one of the CEF forwarding databases.

          Note that the generation of cefInconsistencyDetection
          notifications is throttled by the agent, as specified
          by the 'cefNotifThrottlingInterval' object."
      ::= { ciscoCefMIBNotifs 4 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Conformance Information
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++

   cefMIBGroups        OBJECT IDENTIFIER 
                   ::= { ciscoCefMIBConform 1 }
   cefMIBCompliances   OBJECT IDENTIFIER 
                   ::= { ciscoCefMIBConform 2 }

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Compliance Statements
-- +++++++++++++++++++++++++++++++++++ ++++++++++++++++++++
  cefMIBCompliance       MODULE-COMPLIANCE
      STATUS      current
      DESCRIPTION
         "The compliance statement for SNMP Agents which
          implement this MIB."
      MODULE -- this module
        MANDATORY-GROUPS  { cefGroup,
                            cefNotifCntlGroup,
                            cefNotificationGroup
                          }

      GROUP     cefDistributedGroup
      DESCRIPTION
         "This group should be supported on the agents
          which support distributed CEF (dCEF)."

      GROUP     cefHCStatsGroup
      DESCRIPTION
         "This group should be supported on the agents
          which support 64-bit counters."

      -- OBJECT  cefFESelectionAdjNextHopAddrType
      -- SYNTAX  InetAddressType { ipv4(1), ipv6(2) }
      -- DESCRIPTION
      --    "An implementation is required to support global IPv4
      --     and/or IPv6 addresses, depending on its support for
      --     IPv4 and IPv6."

      OBJECT  cefFESelectionAdjNextHopAddr
      SYNTAX  InetAddress (SIZE(4|16))
      DESCRIPTION
         "An implementation is required to support global IPv4
          and/or IPv6 addresses, depending on its support for
          IPv4 and IPv6."

      -- OBJECT  cefInconsistencyPrefixType
      -- SYNTAX  InetAddressType { ipv4(1), ipv6(2) }
      -- DESCRIPTION
      --    "An implementation is required to support global IPv4
      --     and/or IPv6 addresses, depending on its support for
      --     IPv4 and IPv6."

      OBJECT  cefInconsistencyPrefixAddr
      SYNTAX  InetAddress (SIZE(4|16))
      DESCRIPTION
         "An implementation is required to support global IPv4
          and/or IPv6 addresses, depending on its support for
          IPv4 and IPv6."

        ::= { cefMIBCompliances 1 }

   
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Units of Conformance
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
   cefGroup OBJECT-GROUP
      OBJECTS {
                cefFIBSummaryFwdPrefixes,
                cefPrefixForwardingInfo,
                cefPrefixPkts,
                cefPrefixBytes,
                cefPrefixInternalNRPkts,  
                cefPrefixInternalNRBytes,  
                cefPrefixExternalNRPkts,  
                cefPrefixExternalNRBytes,  
                cefLMPrefixSpinLock, 
                cefLMPrefixState,
                cefLMPrefixAddr,
                cefLMPrefixLen,
                cefLMPrefixRowStatus,
                cefPathType,
                cefPathInterface, 
                cefPathNextHopAddr,
                cefPathRecurseVrfName,
                cefAdjSummaryComplete,
                cefAdjSummaryIncomplete,
                cefAdjSummaryFixup,
                cefAdjSummaryRedirect,
                cefAdjSource,
                cefAdjEncap,
                cefAdjFixup,
                cefAdjMTU,
                cefAdjForwardingInfo,
                cefAdjPkts,
                cefAdjBytes,
                cefFESelectionSpecial,
                cefFESelectionLabels,
                cefFESelectionAdjLinkType,
                cefFESelectionAdjInterface,
                cefFESelectionAdjNextHopAddrType,
                cefFESelectionAdjNextHopAddr,
                cefFESelectionAdjConnId,
                cefFESelectionVrfName,
                cefFESelectionWeight,
                cefCfgAdminState, 
                cefCfgOperState, 
                cefCfgAccountingMap,
                cefCfgLoadSharingAlgorithm,
                cefCfgLoadSharingID,
                cefCfgTrafficStatsLoadInterval,
                cefCfgTrafficStatsUpdateRate, 
                cefResourceMemoryUsed,
                cefResourceFailureReason, 
                cefIntSwitchingState,
                cefIntLoadSharing,                
                cefIntNonrecursiveAccouting,
                cefStatsPrefixQueries,
                cefStatsPrefixInserts,
                cefStatsPrefixDeletes,
                cefStatsPrefixElements,
                cefSwitchingPath,
                cefSwitchingDrop,
                cefSwitchingPunt,
                cefSwitchingPunt2Host
              }
      STATUS current
      DESCRIPTION
         "This group consists of all the managed objects
          which are applicable to CEF irrespective
          of the value of object cefDistributionOperState."
      ::= { cefMIBGroups 1 }
   
    cefDistributedGroup OBJECT-GROUP
       OBJECTS {
                cefCfgDistributionAdminState,
                cefCfgDistributionOperState,
                cefPeerOperState,      
                cefPeerNumberOfResets,
                cefPeerFIBOperState,
                cefCCGlobalAutoRepairEnabled,
                cefCCGlobalAutoRepairDelay,                 
                cefCCGlobalAutoRepairHoldDown,              
                cefCCGlobalErrorMsgEnabled,
                cefCCGlobalFullScanStatus,
                cefCCGlobalFullScanAction,
                cefCCEnabled,
                cefCCCount,
                cefCCPeriod,
                cefCCQueriesSent,
                cefCCQueriesIgnored,
                cefCCQueriesChecked,
                cefCCQueriesIterated,
                entLastInconsistencyDetectTime,
                cefInconsistencyPrefixType,   
                cefInconsistencyPrefixAddr,     
                cefInconsistencyPrefixLen,    
                cefInconsistencyVrfName,        
                cefInconsistencyCCType,         
                cefInconsistencyEntity,           
                cefInconsistencyReason,
                cefInconsistencyReset,
                cefInconsistencyResetStatus     
              }

      STATUS current
      DESCRIPTION
         "This group consists of all the Managed objects
          which are only applicable to CEF is 
          the value of object cefDistributionOperState
          is 'up'."
      ::= { cefMIBGroups 2 }

   cefHCStatsGroup OBJECT-GROUP
      OBJECTS {
                cefPrefixHCPkts,
                cefPrefixHCBytes,
                cefPrefixInternalNRHCPkts, 
                cefPrefixInternalNRHCBytes,
                cefPrefixExternalNRHCPkts, 
                cefPrefixExternalNRHCBytes,
                cefAdjHCPkts,
                cefAdjHCBytes,
                cefStatsPrefixHCQueries,
                cefStatsPrefixHCInserts,
                cefStatsPrefixHCDeletes,
                cefStatsPrefixHCElements,
                cefSwitchingHCDrop,
                cefSwitchingHCPunt,
                cefSwitchingHCPunt2Host
              }
      STATUS current
      DESCRIPTION
         "This group consists of all the 64-bit
          counter objects which are applicable to 
          CEF irrespective of the value of object 
          cefDistributionOperState."
      ::= { cefMIBGroups 3 }

   cefNotifCntlGroup OBJECT-GROUP
      OBJECTS {
                cefResourceFailureNotifEnable,
                cefPeerStateChangeNotifEnable,
                cefPeerFIBStateChangeNotifEnable,
                cefNotifThrottlingInterval,
                cefInconsistencyNotifEnable
              }
      STATUS current
      DESCRIPTION
         "This group of objects controls the sending of 
          CEF Notifications."
      ::= { cefMIBGroups 5 }

   cefNotificationGroup    NOTIFICATION-GROUP
      NOTIFICATIONS {
                      cefResourceFailure,
                      cefPeerStateChange,
                      cefPeerFIBStateChange,
                      cefInconsistencyDetection
                    }
      STATUS current
      DESCRIPTION
         "This group contains the notifications for the CEF MIB."
      ::= { cefMIBGroups 6 }   
  

END